package 接口.基础;


interface A{//使用interface来定义接口
   //接口中的成员变量
    int a = 100;
    //类似于
    public static final int a1 = 100;//默认是public static final一般情况下不这么写

    //接口中的方法
    public abstract void fun1();
    void fun11();
    //类似于
//    void fun1();//不写默认是public abstract
    default void fun2(){//如果用default修饰，那么就可以有具体的实现
        System.out.println("fun2 ");
    }
    static void fun3(){//如果用static修饰，那么就可以有具体的实现，可以不用被重写
        System.out.println("static ");
    }
}
interface C{
//    void fun2(){}//报错
//    public C(){
//
//    }//报错
//    static{
//
//    }//报错
//    {
//
//    }//报错
// 接口中不能有构造方法和代码块
    default void fun2(){//如果用default修饰，那么就可以有具体的实现
        System.out.println("fun2 ");
    }
    static void fun3(){//如果用static修饰，那么就可以有具体的实现，可以不用被重写
        System.out.println("static ");
    }
}
abstract class AA implements A{//使用implements关键字来实现，要重写接口内所有的方法
    @Override
    public void fun1() {

    }

}
class AAA extends AA {

    @Override
    public void fun11() {

    }
}
class AAAA implements A,C{

    @Override
    public void fun1() {

    }

    @Override
    public void fun11() {

    }

    @Override
    public void fun2() {
        A.super.fun2();
    }
}
abstract class CC implements A{
    @Override
    public void fun1() {

    }

}
public class interface_1 {
    public static void main(String[] args) {
//        A a = new A();//接口不能被实例化，他的作用是被实现
    }
}
